home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / u_man / cat1 / perldelta.z / perldelta
Encoding:
Text File  |  1998-10-30  |  79.1 KB  |  1,915 lines

  1.  
  2.  
  3.  
  4. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      perldelta - what's new for perl5.004
  10.  
  11. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  12.      This document describes differences between the 5.003 release (as
  13.      documented in _P_r_o_g_r_a_m_m_i_n_g _P_e_r_l, second edition--the Camel Book) and this
  14.      one.
  15.  
  16. SSSSuuuuppppppppoooorrrrtttteeeedddd EEEEnnnnvvvviiiirrrroooonnnnmmmmeeeennnnttttssss
  17.      Perl5.004 builds out of the box on Unix, Plan 9, LynxOS, VMS, OS/2, QNX,
  18.      AmigaOS, and Windows NT.  Perl runs on Windows 95 as well, but it cannot
  19.      be built there, for lack of a reasonable command interpreter.
  20.  
  21. CCCCoooorrrreeee CCCChhhhaaaannnnggggeeeessss
  22.      Most importantly, many bugs were fixed, including several security
  23.      problems.  See the _C_h_a_n_g_e_s file in the distribution for details.
  24.  
  25.      LLLLiiiisssstttt aaaassssssssiiiiggggnnnnmmmmeeeennnntttt ttttoooo %%%%EEEENNNNVVVV works
  26.  
  27.      %ENV = () and %ENV = @list now work as expected (except on VMS where it
  28.      generates a fatal error).
  29.  
  30.      """"CCCCaaaannnn''''tttt llllooooccccaaaatttteeee FFFFoooooooo....ppppmmmm iiiinnnn @@@@IIIINNNNCCCC" error now lists @INC
  31.  
  32.      CCCCoooommmmppppiiiillllaaaattttiiiioooonnnn ooooppppttttiiiioooonnnn:::: BBBBiiiinnnnaaaarrrryyyy ccccoooommmmppppaaaattttiiiibbbbiiiilllliiiittttyyyy wwwwiiiitttthhhh 5555....000000003333
  33.  
  34.      There is a new Configure question that asks if you want to maintain
  35.      binary compatibility with Perl 5.003.  If you choose binary
  36.      compatibility, you do not have to recompile your extensions, but you
  37.      might have symbol conflicts if you embed Perl in another application,
  38.      just as in the 5.003 release.  By default, binary compatibility is
  39.      preserved at the expense of symbol table pollution.
  40.  
  41.      $$$$PPPPEEEERRRRLLLL5555OOOOPPPPTTTT environment variable
  42.  
  43.      You may now put Perl options in the $PERL5OPT environment variable.
  44.      Unless Perl is running with taint checks, it will interpret this variable
  45.      as if its contents had appeared on a "#!perl" line at the beginning of
  46.      your script, except that hyphens are optional.  PERL5OPT may only be used
  47.      to set the following switches: ----[[[[DDDDIIIIMMMMUUUUddddmmmmwwww]]]].
  48.  
  49.      LLLLiiiimmmmiiiittttaaaattttiiiioooonnnnssss oooonnnn ----MMMM, ----mmmm, and ----TTTT options
  50.  
  51.      The -M and -m options are no longer allowed on the #! line of a script.
  52.      If a script needs a module, it should invoke it with the use pragma.
  53.  
  54.      The ----TTTT option is also forbidden on the #! line of a script, unless it was
  55.      present on the Perl command line.  Due to the way #!  works, this usually
  56.      means that ----TTTT must be in the first argument.  Thus:
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  71.  
  72.  
  73.  
  74.          #!/usr/bin/perl -T -w
  75.  
  76.      will probably work for an executable script invoked as scriptname, while:
  77.  
  78.          #!/usr/bin/perl -w -T
  79.  
  80.      will probably fail under the same conditions.  (Non-Unix systems will
  81.      probably not follow this rule.)  But perl scriptname is guaranteed to
  82.      fail, since then there is no chance of ----TTTT being found on the command line
  83.      before it is found on the #! line.
  84.  
  85.      MMMMoooorrrreeee pppprrrreeeecccciiiisssseeee wwwwaaaarrrrnnnniiiinnnnggggssss
  86.  
  87.      If you removed the ----wwww option from your Perl 5.003 scripts because it made
  88.      Perl too verbose, we recommend that you try putting it back when you
  89.      upgrade to Perl 5.004.  Each new perl version tends to remove some
  90.      undesirable warnings, while adding new warnings that may catch bugs in
  91.      your scripts.
  92.  
  93.      DDDDeeeepppprrrreeeeccccaaaatttteeeedddd:::: IIIInnnnhhhheeeerrrriiiitttteeeedddd AAAAUUUUTTTTOOOOLLLLOOOOAAAADDDD for non-methods
  94.  
  95.      Before Perl 5.004, AUTOLOAD functions were looked up as methods (using
  96.      the @ISA hierarchy), even when the function to be autoloaded was called
  97.      as a plain function (e.g. Foo::bar()), not a method (e.g. Foo->_b_a_r() or
  98.      $obj->_b_a_r()).
  99.  
  100.      Perl 5.005 will use method lookup only for methods' AUTOLOADs.  However,
  101.      there is a significant base of existing code that may be using the old
  102.      behavior.  So, as an interim step, Perl 5.004 issues an optional warning
  103.      when a non-method uses an inherited AUTOLOAD.
  104.  
  105.      The simple rule is:  Inheritance will not work when autoloading non-
  106.      methods.  The simple fix for old code is:  In any module that used to
  107.      depend on inheriting AUTOLOAD for non-methods from a base class named
  108.      BaseClass, execute *AUTOLOAD = \&BaseClass::AUTOLOAD during startup.
  109.  
  110.      PPPPrrrreeeevvvviiiioooouuuussssllllyyyy ddddeeeepppprrrreeeeccccaaaatttteeeedddd %%%%OOOOVVVVEEEERRRRLLLLOOOOAAAADDDD is no longer usable
  111.  
  112.      Using %OVERLOAD to define overloading was deprecated in 5.003.
  113.      Overloading is now defined using the overload pragma. %OVERLOAD is still
  114.      used internally but should not be used by Perl scripts. See the _o_v_e_r_l_o_a_d
  115.      manpage for more details.
  116.  
  117.      SSSSuuuubbbbrrrroooouuuuttttiiiinnnneeee aaaarrrrgggguuuummmmeeeennnnttttssss ccccrrrreeeeaaaatttteeeedddd oooonnnnllllyyyy wwwwhhhheeeennnn tttthhhheeeeyyyy''''rrrreeee mmmmooooddddiiiiffffiiiieeeedddd
  118.  
  119.      In Perl 5.004, nonexistent array and hash elements used as subroutine
  120.      parameters are brought into existence only if they are actually assigned
  121.      to (via @_).
  122.  
  123.      Earlier versions of Perl vary in their handling of such arguments.  Perl
  124.      versions 5.002 and 5.003 always brought them into existence.  Perl
  125.      versions 5.000 and 5.001 brought them into existence only if they were
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  137.  
  138.  
  139.  
  140.      not the first argument (which was almost certainly a bug).  Earlier
  141.      versions of Perl never brought them into existence.
  142.  
  143.      For example, given this code:
  144.  
  145.           undef @a; undef %a;
  146.           sub show { print $_[0] };
  147.           sub change { $_[0]++ };
  148.           show($a[2]);
  149.           change($a{b});
  150.  
  151.      After this code executes in Perl 5.004, $a{b} exists but $a[2] does not.
  152.      In Perl 5.002 and 5.003, both $a{b} and $a[2] would have existed (but
  153.      $a[2]'s value would have been undefined).
  154.  
  155.      GGGGrrrroooouuuupppp vvvveeeeccccttttoooorrrr cccchhhhaaaannnnggggeeeeaaaabbbblllleeee wwwwiiiitttthhhh $$$$))))
  156.  
  157.      The $) special variable has always (well, in Perl 5, at least) reflected
  158.      not only the current effective group, but also the group list as returned
  159.      by the getgroups() C function (if there is one).  However, until this
  160.      release, there has not been a way to call the setgroups() C function from
  161.      Perl.
  162.  
  163.      In Perl 5.004, assigning to $) is exactly symmetrical with examining it:
  164.      The first number in its string value is used as the effective gid; if
  165.      there are any numbers after the first one, they are passed to the
  166.      setgroups() C function (if there is one).
  167.  
  168.      FFFFiiiixxxxeeeedddd ppppaaaarrrrssssiiiinnnngggg ooooffff $$$$$$$$<<<<ddddiiiiggggiiiitttt>>>>,,,, &&&&$$$$<<<<ddddiiiiggggiiiitttt>>>>,,,, eeeettttcccc....
  169.  
  170.      Perl versions before 5.004 misinterpreted any type marker followed by "$"
  171.      and a digit.  For example, "$$0" was incorrectly taken to mean "${$}0"
  172.      instead of "${$0}".  This bug is (mostly) fixed in Perl 5.004.
  173.  
  174.      However, the developers of Perl 5.004 could not fix this bug completely,
  175.      because at least two widely-used modules depend on the old meaning of
  176.      "$$0" in a string.  So Perl 5.004 still interprets "$$<digit>" in the old
  177.      (broken) way inside strings; but it generates this message as a warning.
  178.      And in Perl 5.005, this special treatment will cease.
  179.  
  180.      FFFFiiiixxxxeeeedddd llllooooccccaaaalllliiiizzzzaaaattttiiiioooonnnn ooooffff $$$$<<<<ddddiiiiggggiiiitttt>>>>,,,, $$$$&&&&,,,, eeeettttcccc....
  181.  
  182.      Perl versions before 5.004 did not always properly localize the regex-
  183.      related special variables.  Perl 5.004 does localize them, as the
  184.      documentation has always said it should.  This may result in $1, $2, etc.
  185.      no longer being set where existing programs use them.
  186.  
  187.      NNNNoooo rrrreeeesssseeeettttttttiiiinnnngggg ooooffff $$$$.... oooonnnn iiiimmmmpppplllliiiicccciiiitttt cccclllloooosssseeee
  188.  
  189.      The documentation for Perl 5.0 has always stated that $. is _n_o_t reset
  190.      when an already-open file handle is reopened with no intervening call to
  191.      close.  Due to a bug, perl versions 5.000 through 5.003 _d_i_d reset $.
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  203.  
  204.  
  205.  
  206.      under that circumstance; Perl 5.004 does not.
  207.  
  208.      wwwwaaaannnnttttaaaarrrrrrrraaaayyyy may return undef
  209.  
  210.      The wantarray operator returns true if a subroutine is expected to return
  211.      a list, and false otherwise.  In Perl 5.004, wantarray can also return
  212.      the undefined value if a subroutine's return value will not be used at
  213.      all, which allows subroutines to avoid a time-consuming calculation of a
  214.      return value if it isn't going to be used.
  215.  
  216.      CCCChhhhaaaannnnggggeeeessss ttttoooo ttttaaaaiiiinnnnttttiiiinnnngggg cccchhhheeeecccckkkkssss
  217.  
  218.      A bug in previous versions may have failed to detect some insecure
  219.      conditions when taint checks are turned on.  (Taint checks are used in
  220.      setuid or setgid scripts, or when explicitly turned on with the -T
  221.      invocation option.)  Although it's unlikely, this may cause a
  222.      previously-working script to now fail -- which should be construed as a
  223.      blessing, since that indicates a potentially-serious security hole was
  224.      just plugged.
  225.  
  226.      The new restrictions when tainting include:
  227.  
  228.      No glob() or <*>
  229.           These operators may spawn the C shell (csh), which cannot be made
  230.           safe.  This restriction will be lifted in a future version of Perl
  231.           when globbing is implemented without the use of an external program.
  232.  
  233.      No spawning if tainted $CDPATH, $ENV, $BASH_ENV
  234.           These environment variables may alter the behavior of spawned
  235.           programs (especially shells) in ways that subvert security.  So now
  236.           they are treated as dangerous, in the manner of $IFS and $PATH.
  237.  
  238.      No spawning if tainted $TERM doesn't look like a terminal name
  239.           Some termcap libraries do unsafe things with $TERM.  However, it
  240.           would be unnecessarily harsh to treat all $TERM values as unsafe,
  241.           since only shell metacharacters can cause trouble in $TERM.  So a
  242.           tainted $TERM is considered to be safe if it contains only
  243.           alphanumerics, underscores, dashes, and colons, and unsafe if it
  244.           contains other characters (including whitespace).
  245.  
  246.      NNNNeeeewwww OOOOppppccccooooddddeeee mmmmoooodddduuuulllleeee aaaannnndddd rrrreeeevvvviiiisssseeeedddd SSSSaaaaffffeeee mmmmoooodddduuuulllleeee
  247.  
  248.      A new Opcode module supports the creation, manipulation and application
  249.      of opcode masks.  The revised Safe module has a new API and is
  250.      implemented using the new Opcode module.  Please read the new Opcode and
  251.      Safe documentation.
  252.  
  253.      EEEEmmmmbbbbeeeeddddddddiiiinnnngggg iiiimmmmpppprrrroooovvvveeeemmmmeeeennnnttttssss
  254.  
  255.      In older versions of Perl it was not possible to create more than one
  256.      Perl interpreter instance inside a single process without leaking like a
  257.      sieve and/or crashing.  The bugs that caused this behavior have all been
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  269.  
  270.  
  271.  
  272.      fixed.  However, you still must take care when embedding Perl in a C
  273.      program.  See the updated perlembed manpage for tips on how to manage
  274.      your interpreters.
  275.  
  276.      IIIInnnntttteeeerrrrnnnnaaaallll cccchhhhaaaannnnggggeeee:::: FFFFiiiilllleeeeHHHHaaaannnnddddlllleeee ccccllllaaaassssssss bbbbaaaasssseeeedddd oooonnnn IIIIOOOO::::::::**** ccccllllaaaasssssssseeeessss
  277.  
  278.      File handles are now stored internally as type IO::Handle.  The
  279.      FileHandle module is still supported for backwards compatibility, but it
  280.      is now merely a front end to the IO::* modules -- specifically,
  281.      IO::Handle, IO::Seekable, and IO::File.  We suggest, but do not require,
  282.      that you use the IO::* modules in new code.
  283.  
  284.      In harmony with this change, *GLOB{FILEHANDLE} is now just a backward-
  285.      compatible synonym for *GLOB{IO}.
  286.  
  287.      IIIInnnntttteeeerrrrnnnnaaaallll cccchhhhaaaannnnggggeeee:::: PPPPeeeerrrrllllIIIIOOOO aaaabbbbssssttttrrrraaaaccccttttiiiioooonnnn iiiinnnntttteeeerrrrffffaaaacccceeee
  288.  
  289.      It is now possible to build Perl with AT&T's sfio IO package instead of
  290.      stdio.  See the _p_e_r_l_a_p_i_o manpage for more details, and the _I_N_S_T_A_L_L file
  291.      for how to use it.
  292.  
  293.      NNNNeeeewwww aaaannnndddd cccchhhhaaaannnnggggeeeedddd ssssyyyynnnnttttaaaaxxxx
  294.  
  295.      $coderef->(PARAMS)
  296.           A subroutine reference may now be suffixed with an arrow and a
  297.           (possibly empty) parameter list.  This syntax denotes a call of the
  298.           referenced subroutine, with the given parameters (if any).
  299.  
  300.           This new syntax follows the pattern of $hashref->{FOO} and $aryref-
  301.           >[$foo]: You may now write &$subref($foo) as $subref->($foo).  All
  302.           of these arrow terms may be chained; thus, &{$table->{FOO}}($bar)
  303.           may now be written $table->{FOO}->($bar).
  304.  
  305.      NNNNeeeewwww aaaannnndddd cccchhhhaaaannnnggggeeeedddd bbbbuuuuiiiillllttttiiiinnnn ccccoooonnnnssssttttaaaannnnttttssss
  306.  
  307.      __PACKAGE__
  308.           The current package name at compile time, or the undefined value if
  309.           there is no current package (due to a package; directive).  Like
  310.           __FILE__ and __LINE__, __PACKAGE__ does _n_o_t interpolate into
  311.           strings.
  312.  
  313.      NNNNeeeewwww aaaannnndddd cccchhhhaaaannnnggggeeeedddd bbbbuuuuiiiillllttttiiiinnnn vvvvaaaarrrriiiiaaaabbbblllleeeessss
  314.  
  315.      $^E  Extended error message on some platforms.  (Also known as
  316.           $EXTENDED_OS_ERROR if you use English).
  317.  
  318.      $^H  The current set of syntax checks enabled by use strict.  See the
  319.           documentation of strict for more details.  Not actually new, but
  320.           newly documented.  Because it is intended for internal use by Perl
  321.           core components, there is no use English long name for this
  322.           variable.
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  335.  
  336.  
  337.  
  338.      $^M  By default, running out of memory it is not trappable.  However, if
  339.           compiled for this, Perl may use the contents of $^M as an emergency
  340.           pool after _d_i_e()ing with this message.  Suppose that your Perl were
  341.           compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc.  Then
  342.  
  343.               $^M = 'a' x (1<<16);
  344.  
  345.           would allocate a 64K buffer for use when in emergency.  See the
  346.           _I_N_S_T_A_L_L file for information on how to enable this option.  As a
  347.           disincentive to casual use of this advanced feature, there is no use
  348.           English long name for this variable.
  349.  
  350.      NNNNeeeewwww aaaannnndddd cccchhhhaaaannnnggggeeeedddd bbbbuuuuiiiillllttttiiiinnnn ffffuuuunnnnccccttttiiiioooonnnnssss
  351.  
  352.      delete on slices
  353.           This now works.  (e.g. delete @ENV{'PATH', 'MANPATH'})
  354.  
  355.      flock
  356.           is now supported on more platforms, prefers fcntl to lockf when
  357.           emulating, and always flushes before (un)locking.
  358.  
  359.      printf and sprintf
  360.           Perl now implements these functions itself; it doesn't use the C
  361.           library function _s_p_r_i_n_t_f() any more, except for floating-point
  362.           numbers, and even then only known flags are allowed.  As a result,
  363.           it is now possible to know which conversions and flags will work,
  364.           and what they will do.
  365.  
  366.           The new conversions in Perl's _s_p_r_i_n_t_f() are:
  367.  
  368.              %i   a synonym for %d
  369.              %p   a pointer (the address of the Perl value, in hexadecimal)
  370.              %n   special: *stores* the number of characters output so far
  371.                   into the next variable in the parameter list
  372.  
  373.           The new flags that go between the % and the conversion are:
  374.  
  375.              #    prefix octal with "0", hex with "0x"
  376.              h    interpret integer as C type "short" or "unsigned short"
  377.              V    interpret integer as Perl's standard integer type
  378.  
  379.           Also, where a number would appear in the flags, an asterisk ("*")
  380.           may be used instead, in which case Perl uses the next item in the
  381.           parameter list as the given number (that is, as the field width or
  382.           precision).  If a field width obtained through "*" is negative, it
  383.           has the same effect as the '-' flag: left-justification.
  384.  
  385.           See the sprintf entry in the _p_e_r_l_f_u_n_c manpage for a complete list of
  386.           conversion and flags.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  401.  
  402.  
  403.  
  404.      keys as an lvalue
  405.           As an lvalue, keys allows you to increase the number of hash buckets
  406.           allocated for the given hash.  This can gain you a measure of
  407.           efficiency if you know the hash is going to get big.  (This is
  408.           similar to pre-extending an array by assigning a larger number to
  409.           $#array.)  If you say
  410.  
  411.               keys %hash = 200;
  412.  
  413.           then %hash will have at least 200 buckets allocated for it.  These
  414.           buckets will be retained even if you do %hash = (); use undef %hash
  415.           if you want to free the storage while %hash is still in scope.  You
  416.           can't shrink the number of buckets allocated for the hash using keys
  417.           in this way (but you needn't worry about doing this by accident, as
  418.           trying has no effect).
  419.  
  420.      my() in Control Structures
  421.           You can now use _m_y() (with or without the parentheses) in the
  422.           control expressions of control structures such as:
  423.  
  424.               while (defined(my $line = <>)) {
  425.                   $line = lc $line;
  426.               } continue {
  427.                   print $line;
  428.               }
  429.  
  430.               if ((my $answer = <STDIN>) =~ /^y(es)?$/i) {
  431.                   user_agrees();
  432.               } elsif ($answer =~ /^n(o)?$/i) {
  433.                   user_disagrees();
  434.               } else {
  435.                   chomp $answer;
  436.                   die "`$answer' is neither `yes' nor `no'";
  437.               }
  438.  
  439.           Also, you can declare a foreach loop control variable as lexical by
  440.           preceding it with the word "my".  For example, in:
  441.  
  442.               foreach my $i (1, 2, 3) {
  443.                   some_function();
  444.               }
  445.  
  446.           $i is a lexical variable, and the scope of $i extends to the end of
  447.           the loop, but not beyond it.
  448.  
  449.           Note that you still cannot use _m_y() on global punctuation variables
  450.           such as $_ and the like.
  451.  
  452.      pack() and unpack()
  453.           A new format 'w' represents a BER compressed integer (as defined in
  454.           ASN.1).  Its format is a sequence of one or more bytes, each of
  455.           which provides seven bits of the total value, with the most
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  467.  
  468.  
  469.  
  470.           significant first.  Bit eight of each byte is set, except for the
  471.           last byte, in which bit eight is clear.
  472.  
  473.           If 'p' or 'P' are given undef as values, they now generate a NULL
  474.           pointer.
  475.  
  476.           Both _p_a_c_k() and _u_n_p_a_c_k() now fail when their templates contain
  477.           invalid types.  (Invalid types used to be ignored.)
  478.  
  479.      sysseek()
  480.           The new _s_y_s_s_e_e_k() operator is a variant of _s_e_e_k() that sets and gets
  481.           the file's system read/write position, using the _l_s_e_e_k(2) system
  482.           call.  It is the only reliable way to seek before using _s_y_s_r_e_a_d() or
  483.           _s_y_s_w_r_i_t_e().  Its return value is the new position, or the undefined
  484.           value on failure.
  485.  
  486.      use VERSION
  487.           If the first argument to use is a number, it is treated as a version
  488.           number instead of a module name.  If the version of the Perl
  489.           interpreter is less than VERSION, then an error message is printed
  490.           and Perl exits immediately.  Because use occurs at compile time,
  491.           this check happens immediately during the compilation process,
  492.           unlike require VERSION, which waits until runtime for the check.
  493.           This is often useful if you need to check the current Perl version
  494.           before useing library modules which have changed in incompatible
  495.           ways from older versions of Perl.  (We try not to do this more than
  496.           we have to.)
  497.  
  498.      use Module VERSION LIST
  499.           If the VERSION argument is present between Module and LIST, then the
  500.           use will call the VERSION method in class Module with the given
  501.           version as an argument.  The default VERSION method, inherited from
  502.           the UNIVERSAL class, croaks if the given version is larger than the
  503.           value of the variable $Module::VERSION.  (Note that there is not a
  504.           comma after VERSION!)
  505.  
  506.           This version-checking mechanism is similar to the one currently used
  507.           in the Exporter module, but it is faster and can be used with
  508.           modules that don't use the Exporter.  It is the recommended method
  509.           for new code.
  510.  
  511.      prototype(FUNCTION)
  512.           Returns the prototype of a function as a string (or undef if the
  513.           function has no prototype).  FUNCTION is a reference to or the name
  514.           of the function whose prototype you want to retrieve.  (Not actually
  515.           new; just never documented before.)
  516.  
  517.      srand
  518.           The default seed for srand, which used to be time, has been changed.
  519.           Now it's a heady mix of difficult-to-predict system-dependent
  520.           values, which should be sufficient for most everyday purposes.
  521.  
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  533.  
  534.  
  535.  
  536.           Previous to version 5.004, calling rand without first calling srand
  537.           would yield the same sequence of random numbers on most or all
  538.           machines.  Now, when perl sees that you're calling rand and haven't
  539.           yet called srand, it calls srand with the default seed. You should
  540.           still call srand manually if your code might ever be run on a pre-
  541.           5.004 system, of course, or if you want a seed other than the
  542.           default.
  543.  
  544.      $_ as Default
  545.           Functions documented in the Camel to default to $_ now in fact do,
  546.           and all those that do are so documented in the _p_e_r_l_f_u_n_c manpage.
  547.  
  548.      m//gc does not reset search position on failure
  549.           The m//g match iteration construct has always reset its target
  550.           string's search position (which is visible through the pos operator)
  551.           when a match fails; as a result, the next m//g match after a failure
  552.           starts again at the beginning of the string.  With Perl 5.004, this
  553.           reset may be disabled by adding the "c" (for "continue") modifier,
  554.           i.e. m//gc.  This feature, in conjunction with the \G zero-width
  555.           assertion, makes it possible to chain matches together.  See the
  556.           _p_e_r_l_o_p manpage and the _p_e_r_l_r_e manpage.
  557.  
  558.      m//x ignores whitespace before ?*+{}
  559.           The m//x construct has always been intended to ignore all unescaped
  560.           whitespace.  However, before Perl 5.004, whitespace had the effect
  561.           of escaping repeat modifiers like "*" or "?"; for example, /a *b/x
  562.           was (mis)interpreted as /a\*b/x.  This bug has been fixed in 5.004.
  563.  
  564.      nested sub{} closures work now
  565.           Prior to the 5.004 release, nested anonymous functions didn't work
  566.           right.  They do now.
  567.  
  568.      formats work right on changing lexicals
  569.           Just like anonymous functions that contain lexical variables that
  570.           change (like a lexical index variable for a foreach loop), formats
  571.           now work properly.  For example, this silently failed before
  572.           (printed only zeros), but is fine now:
  573.  
  574.               my $i;
  575.               foreach $i ( 1 .. 10 ) {
  576.                   write;
  577.               }
  578.               format =
  579.                   my i is @#
  580.                   $i
  581.               .
  582.  
  583.           However, it still fails (without a warning) if the foreach is within
  584.           a subroutine:
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  599.  
  600.  
  601.  
  602.               my $i;
  603.               sub foo {
  604.                 foreach $i ( 1 .. 10 ) {
  605.                   write;
  606.                 }
  607.               }
  608.               foo;
  609.               format =
  610.                   my i is @#
  611.                   $i
  612.               .
  613.  
  614.  
  615.      NNNNeeeewwww bbbbuuuuiiiillllttttiiiinnnn mmmmeeeetttthhhhooooddddssss
  616.  
  617.      The UNIVERSAL package automatically contains the following methods that
  618.      are inherited by all other classes:
  619.  
  620.      isa(CLASS)
  621.           isa returns _t_r_u_e if its object is blessed into a subclass of CLASS
  622.  
  623.           isa is also exportable and can be called as a sub with two
  624.           arguments. This allows the ability to check what a reference points
  625.           to. Example:
  626.  
  627.               use UNIVERSAL qw(isa);
  628.  
  629.               if(isa($ref, 'ARRAY')) {
  630.                  ...
  631.               }
  632.  
  633.  
  634.      can(METHOD)
  635.           can checks to see if its object has a method called METHOD, if it
  636.           does then a reference to the sub is returned; if it does not then
  637.           _u_n_d_e_f is returned.
  638.  
  639.      VERSION( [NEED] )
  640.           VERSION returns the version number of the class (package).  If the
  641.           NEED argument is given then it will check that the current version
  642.           (as defined by the $VERSION variable in the given package) not less
  643.           than NEED; it will die if this is not the case.  This method is
  644.           normally called as a class method.  This method is called
  645.           automatically by the VERSION form of use.
  646.  
  647.               use A 1.2 qw(some imported subs);
  648.               # implies:
  649.               A->VERSION(1.2);
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  665.  
  666.  
  667.  
  668.      NNNNOOOOTTTTEEEE:::: can directly uses Perl's internal code for method lookup, and isa
  669.      uses a very similar method and caching strategy. This may cause strange
  670.      effects if the Perl code dynamically changes @ISA in any package.
  671.  
  672.      You may add other methods to the UNIVERSAL class via Perl or XS code.
  673.      You do not need to use UNIVERSAL in order to make these methods available
  674.      to your program.  This is necessary only if you wish to have isa
  675.      available as a plain subroutine in the current package.
  676.  
  677.      TTTTIIIIEEEEHHHHAAAANNNNDDDDLLLLEEEE nnnnoooowwww ssssuuuuppppppppoooorrrrtttteeeedddd
  678.  
  679.      See the _p_e_r_l_t_i_e manpage for other kinds of _t_i_e()s.
  680.  
  681.      TIEHANDLE classname, LIST
  682.           This is the constructor for the class.  That means it is expected to
  683.           return an object of some sort. The reference can be used to hold
  684.           some internal information.
  685.  
  686.               sub TIEHANDLE {
  687.                   print "<shout>\n";
  688.                   my $i;
  689.                   return bless \$i, shift;
  690.               }
  691.  
  692.  
  693.      PRINT this, LIST
  694.           This method will be triggered every time the tied handle is printed
  695.           to.  Beyond its self reference it also expects the list that was
  696.           passed to the print function.
  697.  
  698.               sub PRINT {
  699.                   $r = shift;
  700.                   $$r++;
  701.                   return print join( $, => map {uc} @_), $\;
  702.               }
  703.  
  704.  
  705.      PRINTF this, LIST
  706.           This method will be triggered every time the tied handle is printed
  707.           to with the printf() function.  Beyond its self reference it also
  708.           expects the format and list that was passed to the printf function.
  709.  
  710.               sub PRINTF {
  711.                   shift;
  712.                     my $fmt = shift;
  713.                   print sprintf($fmt, @_)."\n";
  714.               }
  715.  
  716.  
  717.      READ this LIST
  718.           This method will be called when the handle is read from via the read
  719.           or sysread functions.
  720.  
  721.  
  722.  
  723.                                                                        PPPPaaaaggggeeee 11111111
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  731.  
  732.  
  733.  
  734.               sub READ {
  735.                   $r = shift;
  736.                   my($buf,$len,$offset) = @_;
  737.                   print "READ called, \$buf=$buf, \$len=$len, \$offset=$offset";
  738.               }
  739.  
  740.  
  741.      READLINE this
  742.           This method will be called when the handle is read from. The method
  743.           should return undef when there is no more data.
  744.  
  745.               sub READLINE {
  746.                   $r = shift;
  747.                   return "PRINT called $$r times\n"
  748.               }
  749.  
  750.  
  751.      GETC this
  752.           This method will be called when the getc function is called.
  753.  
  754.               sub GETC { print "Don't GETC, Get Perl"; return "a"; }
  755.  
  756.  
  757.      DESTROY this
  758.           As with the other types of ties, this method will be called when the
  759.           tied handle is about to be destroyed. This is useful for debugging
  760.           and possibly for cleaning up.
  761.  
  762.               sub DESTROY {
  763.                   print "</shout>\n";
  764.               }
  765.  
  766.  
  767.      MMMMaaaalllllllloooocccc eeeennnnhhhhaaaannnncccceeeemmmmeeeennnnttttssss
  768.  
  769.      If perl is compiled with the malloc included with the perl distribution
  770.      (that is, if perl -V:d_mymalloc is 'define') then you can print memory
  771.      statistics at runtime by running Perl thusly:
  772.  
  773.        env PERL_DEBUG_MSTATS=2 perl your_script_here
  774.  
  775.      The value of 2 means to print statistics after compilation and on exit;
  776.      with a value of 1, the statistics are printed only on exit.  (If you want
  777.      the statistics at an arbitrary time, you'll need to install the optional
  778.      module Devel::Peek.)
  779.  
  780.      Three new compilation flags are recognized by malloc.c.  (They have no
  781.      effect if perl is compiled with system _m_a_l_l_o_c().)
  782.  
  783.      -DPERL_EMERGENCY_SBRK
  784.           If this macro is defined, running out of memory need not be a fatal
  785.           error: a memory pool can allocated by assigning to the special
  786.  
  787.  
  788.  
  789.                                                                        PPPPaaaaggggeeee 11112222
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  797.  
  798.  
  799.  
  800.           variable $^M.  See the section on $^_M.
  801.  
  802.      -DPACK_MALLOC
  803.           Perl memory allocation is by bucket with sizes close to powers of
  804.           two.  Because of these malloc overhead may be big, especially for
  805.           data of size exactly a power of two.  If PACK_MALLOC is defined,
  806.           perl uses a slightly different algorithm for small allocations (up
  807.           to 64 bytes long), which makes it possible to have overhead down to
  808.           1 byte for allocations which are powers of two (and appear quite
  809.           often).
  810.  
  811.           Expected memory savings (with 8-byte alignment in alignbytes) is
  812.           about 20% for typical Perl usage.  Expected slowdown due to
  813.           additional malloc overhead is in fractions of a percent (hard to
  814.           measure, because of the effect of saved memory on speed).
  815.  
  816.      -DTWO_POT_OPTIMIZE
  817.           Similarly to PACK_MALLOC, this macro improves allocations of data
  818.           with size close to a power of two; but this works for big
  819.           allocations (starting with 16K by default).  Such allocations are
  820.           typical for big hashes and special-purpose scripts, especially image
  821.           processing.
  822.  
  823.           On recent systems, the fact that perl requires 2M from system for 1M
  824.           allocation will not affect speed of execution, since the tail of
  825.           such a chunk is not going to be touched (and thus will not require
  826.           real memory).  However, it may result in a premature out-of-memory
  827.           error.  So if you will be manipulating very large blocks with sizes
  828.           close to powers of two, it would be wise to define this macro.
  829.  
  830.           Expected saving of memory is 0-100% (100% in applications which
  831.           require most memory in such 2**n chunks); expected slowdown is
  832.           negligible.
  833.  
  834.      MMMMiiiisssscccceeeellllllllaaaannnneeeeoooouuuussss eeeeffffffffiiiicccciiiieeeennnnccccyyyy eeeennnnhhhhaaaannnncccceeeemmmmeeeennnnttttssss
  835.  
  836.      Functions that have an empty prototype and that do nothing but return a
  837.      fixed value are now inlined (e.g. sub PI () { 3.14159 }).
  838.  
  839.      Each unique hash key is only allocated once, no matter how many hashes
  840.      have an entry with that key.  So even if you have 100 copies of the same
  841.      hash, the hash keys never have to be reallocated.
  842.  
  843. SSSSuuuuppppppppoooorrrrtttt ffffoooorrrr MMMMoooorrrreeee OOOOppppeeeerrrraaaattttiiiinnnngggg SSSSyyyysssstttteeeemmmmssss
  844.      Support for the following operating systems is new in Perl 5.004.
  845.  
  846.      WWWWiiiinnnn33332222
  847.  
  848.      Perl 5.004 now includes support for building a "native" perl under
  849.      Windows NT, using the Microsoft Visual C++ compiler (versions 2.0 and
  850.      above) or the Borland C++ compiler (versions 5.02 and above).  The
  851.      resulting perl can be used under Windows 95 (if it is installed in the
  852.  
  853.  
  854.  
  855.                                                                        PPPPaaaaggggeeee 11113333
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  863.  
  864.  
  865.  
  866.      same directory locations as it got installed in Windows NT).  This port
  867.      includes support for perl extension building tools like the _M_a_k_e_M_a_k_e_r
  868.      manpage and the _h_2_x_s manpage, so that many extensions available on the
  869.      Comprehensive Perl Archive Network (CPAN) can now be readily built under
  870.      Windows NT.  See http://www.perl.com/ for more information on CPAN, and
  871.      the _R_E_A_D_M_E._w_i_n_3_2 manpage for more details on how to get started with
  872.      building this port.
  873.  
  874.      There is also support for building perl under the Cygwin32 environment.
  875.      Cygwin32 is a set of GNU tools that make it possible to compile and run
  876.      many UNIX programs under Windows NT by providing a mostly UNIX-like
  877.      interface for compilation and execution.  See the _R_E_A_D_M_E._c_y_g_w_i_n_3_2 manpage
  878.      for more details on this port, and how to obtain the Cygwin32 toolkit.
  879.  
  880.      PPPPllllaaaannnn 9999
  881.  
  882.      See the _R_E_A_D_M_E._p_l_a_n_9 manpage.
  883.  
  884.      QQQQNNNNXXXX
  885.  
  886.      See the _R_E_A_D_M_E._q_n_x manpage.
  887.  
  888.      AAAAmmmmiiiiggggaaaaOOOOSSSS
  889.  
  890.      See the _R_E_A_D_M_E._a_m_i_g_a_o_s manpage.
  891.  
  892. PPPPrrrraaaaggggmmmmaaaattttaaaa
  893.      Six new pragmatic modules exist:
  894.  
  895.      use autouse MODULE => qw(sub1 sub2 sub3)
  896.           Defers require MODULE until someone calls one of the specified
  897.           subroutines (which must be exported by MODULE).  This pragma should
  898.           be used with caution, and only when necessary.
  899.  
  900.      use blib
  901.  
  902.      use blib 'dir'
  903.           Looks for MakeMaker-like '_b_l_i_b' directory structure starting in _d_i_r
  904.           (or current directory) and working back up to five levels of parent
  905.           directories.
  906.  
  907.           Intended for use on command line with ----MMMM option as a way of testing
  908.           arbitrary scripts against an uninstalled version of a package.
  909.  
  910.      use constant NAME => VALUE
  911.           Provides a convenient interface for creating compile-time constants,
  912.           See the section on _C_o_n_s_t_a_n_t _F_u_n_c_t_i_o_n_s in the _p_e_r_l_s_u_b manpage.
  913.  
  914.      use locale
  915.           Tells the compiler to enable (or disable) the use of POSIX locales
  916.           for builtin operations.
  917.  
  918.  
  919.  
  920.  
  921.                                                                        PPPPaaaaggggeeee 11114444
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  929.  
  930.  
  931.  
  932.           When use locale is in effect, the current LC_CTYPE locale is used
  933.           for regular expressions and case mapping; LC_COLLATE for string
  934.           ordering; and LC_NUMERIC for numeric formating in printf and sprintf
  935.           (but nnnnooootttt in print).  LC_NUMERIC is always used in write, since
  936.           lexical scoping of formats is problematic at best.
  937.  
  938.           Each use locale or no locale affects statements to the end of the
  939.           enclosing BLOCK or, if not inside a BLOCK, to the end of the current
  940.           file.  Locales can be switched and queried with _P_O_S_I_X::_s_e_t_l_o_c_a_l_e().
  941.  
  942.           See the _p_e_r_l_l_o_c_a_l_e manpage for more information.
  943.  
  944.      use ops
  945.           Disable unsafe opcodes, or any named opcodes, when compiling Perl
  946.           code.
  947.  
  948.      use vmsish
  949.           Enable VMS-specific language features.  Currently, there are three
  950.           VMS-specific features available: 'status', which makes $? and system
  951.           return genuine VMS status values instead of emulating POSIX; 'exit',
  952.           which makes exit take a genuine VMS status value instead of assuming
  953.           that exit 1 is an error; and 'time', which makes all times relative
  954.           to the local time zone, in the VMS tradition.
  955.  
  956. MMMMoooodddduuuulllleeeessss
  957.      RRRReeeeqqqquuuuiiiirrrreeeedddd UUUUppppddddaaaatttteeeessss
  958.  
  959.      Though Perl 5.004 is compatible with almost all modules that work with
  960.      Perl 5.003, there are a few exceptions:
  961.  
  962.          Module   Required Version for Perl 5.004
  963.          ------   -------------------------------
  964.          Filter   Filter-1.12
  965.          LWP      libwww-perl-5.08
  966.          Tk       Tk400.202 (-w makes noise)
  967.  
  968.      Also, the majordomo mailing list program, version 1.94.1, doesn't work
  969.      with Perl 5.004 (nor with perl 4), because it executes an invalid regular
  970.      expression.  This bug is fixed in majordomo version 1.94.2.
  971.  
  972.      IIIInnnnssssttttaaaallllllllaaaattttiiiioooonnnn ddddiiiirrrreeeeccccttttoooorrrriiiieeeessss
  973.  
  974.      The _i_n_s_t_a_l_l_p_e_r_l script now places the Perl source files for extensions in
  975.      the architecture-specific library directory, which is where the shared
  976.      libraries for extensions have always been.  This change is intended to
  977.      allow administrators to keep the Perl 5.004 library directory unchanged
  978.      from a previous version, without running the risk of binary
  979.      incompatibility between extensions' Perl source and shared libraries.
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.                                                                        PPPPaaaaggggeeee 11115555
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  995.  
  996.  
  997.  
  998.      MMMMoooodddduuuulllleeee iiiinnnnffffoooorrrrmmmmaaaattttiiiioooonnnn ssssuuuummmmmmmmaaaarrrryyyy
  999.  
  1000.      Brand new modules, arranged by topic rather than strictly alphabetically:
  1001.  
  1002.          CGI.pm               Web server interface ("Common Gateway Interface")
  1003.          CGI/Apache.pm        Support for Apache's Perl module
  1004.          CGI/Carp.pm          Log server errors with helpful context
  1005.          CGI/Fast.pm          Support for FastCGI (persistent server process)
  1006.          CGI/Push.pm          Support for server push
  1007.          CGI/Switch.pm        Simple interface for multiple server types
  1008.  
  1009.          CPAN                 Interface to Comprehensive Perl Archive Network
  1010.          CPAN::FirstTime      Utility for creating CPAN configuration file
  1011.          CPAN::Nox            Runs CPAN while avoiding compiled extensions
  1012.  
  1013.          IO.pm                Top-level interface to IO::* classes
  1014.          IO/File.pm           IO::File extension Perl module
  1015.          IO/Handle.pm         IO::Handle extension Perl module
  1016.          IO/Pipe.pm           IO::Pipe extension Perl module
  1017.          IO/Seekable.pm       IO::Seekable extension Perl module
  1018.          IO/Select.pm         IO::Select extension Perl module
  1019.          IO/Socket.pm         IO::Socket extension Perl module
  1020.  
  1021.          Opcode.pm            Disable named opcodes when compiling Perl code
  1022.  
  1023.          ExtUtils/Embed.pm    Utilities for embedding Perl in C programs
  1024.          ExtUtils/testlib.pm  Fixes up @INC to use just-built extension
  1025.  
  1026.          FindBin.pm           Find path of currently executing program
  1027.  
  1028.          Class/Struct.pm      Declare struct-like datatypes as Perl classes
  1029.          File/stat.pm         By-name interface to Perl's builtin stat
  1030.          Net/hostent.pm       By-name interface to Perl's builtin gethost*
  1031.          Net/netent.pm        By-name interface to Perl's builtin getnet*
  1032.          Net/protoent.pm      By-name interface to Perl's builtin getproto*
  1033.          Net/servent.pm       By-name interface to Perl's builtin getserv*
  1034.          Time/gmtime.pm       By-name interface to Perl's builtin gmtime
  1035.          Time/localtime.pm    By-name interface to Perl's builtin localtime
  1036.          Time/tm.pm           Internal object for Time::{gm,local}time
  1037.          User/grent.pm        By-name interface to Perl's builtin getgr*
  1038.          User/pwent.pm        By-name interface to Perl's builtin getpw*
  1039.  
  1040.          Tie/RefHash.pm       Base class for tied hashes with references as keys
  1041.  
  1042.          UNIVERSAL.pm         Base class for *ALL* classes
  1043.  
  1044.  
  1045.      FFFFccccnnnnttttllll
  1046.  
  1047.      New constants in the existing Fcntl modules are now supported, provided
  1048.      that your operating system happens to support them:
  1049.  
  1050.  
  1051.  
  1052.  
  1053.                                                                        PPPPaaaaggggeeee 11116666
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1061.  
  1062.  
  1063.  
  1064.          F_GETOWN F_SETOWN
  1065.          O_ASYNC O_DEFER O_DSYNC O_FSYNC O_SYNC
  1066.          O_EXLOCK O_SHLOCK
  1067.  
  1068.      These constants are intended for use with the Perl operators _s_y_s_o_p_e_n()
  1069.      and _f_c_n_t_l() and the basic database modules like SDBM_File.  For the exact
  1070.      meaning of these and other Fcntl constants please refer to your operating
  1071.      system's documentation for _f_c_n_t_l() and _o_p_e_n().
  1072.  
  1073.      In addition, the Fcntl module now provides these constants for use with
  1074.      the Perl operator _f_l_o_c_k():
  1075.  
  1076.              LOCK_SH LOCK_EX LOCK_NB LOCK_UN
  1077.  
  1078.      These constants are defined in all environments (because where there is
  1079.      no _f_l_o_c_k() system call, Perl emulates it).  However, for historical
  1080.      reasons, these constants are not exported unless they are explicitly
  1081.      requested with the ":flock" tag (e.g. use Fcntl ':flock').
  1082.  
  1083.      IIIIOOOO
  1084.  
  1085.      The IO module provides a simple mechanism to load all of the IO modules
  1086.      at one go.  Currently this includes:
  1087.  
  1088.           IO::Handle
  1089.           IO::Seekable
  1090.           IO::File
  1091.           IO::Pipe
  1092.           IO::Socket
  1093.  
  1094.      For more information on any of these modules, please see its respective
  1095.      documentation.
  1096.  
  1097.      MMMMaaaatttthhhh::::::::CCCCoooommmmpppplllleeeexxxx
  1098.  
  1099.      The Math::Complex module has been totally rewritten, and now supports
  1100.      more operations.  These are overloaded:
  1101.  
  1102.           + - * / ** <=> neg ~ abs sqrt exp log sin cos atan2 "" (stringify)
  1103.  
  1104.      And these functions are now exported:
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.                                                                        PPPPaaaaggggeeee 11117777
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1127.  
  1128.  
  1129.  
  1130.          pi i Re Im arg
  1131.          log10 logn ln cbrt root
  1132.          tan
  1133.          csc sec cot
  1134.          asin acos atan
  1135.          acsc asec acot
  1136.          sinh cosh tanh
  1137.          csch sech coth
  1138.          asinh acosh atanh
  1139.          acsch asech acoth
  1140.          cplx cplxe
  1141.  
  1142.  
  1143.      MMMMaaaatttthhhh::::::::TTTTrrrriiiigggg
  1144.  
  1145.      This new module provides a simpler interface to parts of Math::Complex
  1146.      for those who need trigonometric functions only for real numbers.
  1147.  
  1148.      DDDDBBBB____FFFFiiiilllleeee
  1149.  
  1150.      There have been quite a few changes made to DB_File. Here are a few of
  1151.      the highlights:
  1152.  
  1153.      +o    Fixed a handful of bugs.
  1154.  
  1155.      +o    By public demand, added support for the standard hash function
  1156.           _e_x_i_s_t_s().
  1157.  
  1158.      +o    Made it compatible with Berkeley DB 1.86.
  1159.  
  1160.      +o    Made negative subscripts work with RECNO interface.
  1161.  
  1162.      +o    Changed the default flags from O_RDWR to O_CREAT|O_RDWR and the
  1163.           default mode from 0640 to 0666.
  1164.  
  1165.      +o    Made DB_File automatically import the _o_p_e_n() constants (O_RDWR,
  1166.           O_CREAT etc.) from Fcntl, if available.
  1167.  
  1168.      +o    Updated documentation.
  1169.  
  1170.      Refer to the HISTORY section in DB_File.pm for a complete list of
  1171.      changes. Everything after DB_File 1.01 has been added since 5.003.
  1172.  
  1173.      NNNNeeeetttt::::::::PPPPiiiinnnngggg
  1174.  
  1175.      Major rewrite - support added for both udp echo and real icmp pings.
  1176.  
  1177.      OOOObbbbjjjjeeeecccctttt----oooorrrriiiieeeennnntttteeeedddd oooovvvveeeerrrrrrrriiiiddddeeeessss ffffoooorrrr bbbbuuuuiiiillllttttiiiinnnn ooooppppeeeerrrraaaattttoooorrrrssss
  1178.  
  1179.      Many of the Perl builtins returning lists now have object-oriented
  1180.      overrides.  These are:
  1181.  
  1182.  
  1183.  
  1184.  
  1185.                                                                        PPPPaaaaggggeeee 11118888
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1193.  
  1194.  
  1195.  
  1196.          File::stat
  1197.          Net::hostent
  1198.          Net::netent
  1199.          Net::protoent
  1200.          Net::servent
  1201.          Time::gmtime
  1202.          Time::localtime
  1203.          User::grent
  1204.          User::pwent
  1205.  
  1206.      For example, you can now say
  1207.  
  1208.          use File::stat;
  1209.          use User::pwent;
  1210.          $his = (stat($filename)->st_uid == pwent($whoever)->pw_uid);
  1211.  
  1212.  
  1213. UUUUttttiiiilllliiiittttyyyy CCCChhhhaaaannnnggggeeeessss
  1214.      ppppoooodddd2222hhhhttttmmmmllll
  1215.  
  1216.      Sends converted HTML to standard output
  1217.           The _p_o_d_2_h_t_m_l utility included with Perl 5.004 is entirely new.  By
  1218.           default, it sends the converted HTML to its standard output, instead
  1219.           of writing it to a file like Perl 5.003's _p_o_d_2_h_t_m_l did.  Use the --------
  1220.           oooouuuuttttffffiiiilllleeee====FFFFIIIILLLLEEEENNNNAAAAMMMMEEEE option to write to a file.
  1221.  
  1222.      xxxxssssuuuubbbbpppppppp
  1223.  
  1224.      void XSUBs now default to returning nothing
  1225.           Due to a documentation/implementation bug in previous versions of
  1226.           Perl, XSUBs with a return type of void have actually been returning
  1227.           one value.  Usually that value was the GV for the XSUB, but
  1228.           sometimes it was some already freed or reused value, which would
  1229.           sometimes lead to program failure.
  1230.  
  1231.           In Perl 5.004, if an XSUB is declared as returning void, it actually
  1232.           returns no value, i.e. an empty list (though there is a backward-
  1233.           compatibility exception; see below).  If your XSUB really does
  1234.           return an SV, you should give it a return type of SV *.
  1235.  
  1236.           For backward compatibility, _x_s_u_b_p_p tries to guess whether a void
  1237.           XSUB is really void or if it wants to return an SV *.  It does so by
  1238.           examining the text of the XSUB: if _x_s_u_b_p_p finds what looks like an
  1239.           assignment to ST(0), it assumes that the XSUB's return type is
  1240.           really SV *.
  1241.  
  1242. CCCC LLLLaaaannnngggguuuuaaaaggggeeee AAAAPPPPIIII CCCChhhhaaaannnnggggeeeessss
  1243.      gv_fetchmethod and perl_call_sv
  1244.           The gv_fetchmethod function finds a method for an object, just like
  1245.           in Perl 5.003.  The GV it returns may be a method cache entry.
  1246.           However, in Perl 5.004, method cache entries are not visible to
  1247.           users; therefore, they can no longer be passed directly to
  1248.  
  1249.  
  1250.  
  1251.                                                                        PPPPaaaaggggeeee 11119999
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1259.  
  1260.  
  1261.  
  1262.           perl_call_sv.  Instead, you should use the GvCV macro on the GV to
  1263.           extract its CV, and pass the CV to perl_call_sv.
  1264.  
  1265.           The most likely symptom of passing the result of gv_fetchmethod to
  1266.           perl_call_sv is Perl's producing an "Undefined subroutine called"
  1267.           error on the _s_e_c_o_n_d call to a given method (since there is no cache
  1268.           on the first call).
  1269.  
  1270.      perl_eval_pv
  1271.           A new function handy for eval'ing strings of Perl code inside C
  1272.           code.  This function returns the value from the eval statement,
  1273.           which can be used instead of fetching globals from the symbol table.
  1274.           See the _p_e_r_l_g_u_t_s manpage, the _p_e_r_l_e_m_b_e_d manpage and the _p_e_r_l_c_a_l_l
  1275.           manpage for details and examples.
  1276.  
  1277.      Extended API for manipulating hashes
  1278.           Internal handling of hash keys has changed.  The old hashtable API
  1279.           is still fully supported, and will likely remain so.  The additions
  1280.           to the API allow passing keys as SV*s, so that tied hashes can be
  1281.           given real scalars as keys rather than plain strings (nontied hashes
  1282.           still can only use strings as keys).  New extensions must use the
  1283.           new hash access functions and macros if they wish to use SV* keys.
  1284.           These additions also make it feasible to manipulate HE*s (hash
  1285.           entries), which can be more efficient.  See the _p_e_r_l_g_u_t_s manpage for
  1286.           details.
  1287.  
  1288. DDDDooooccccuuuummmmeeeennnnttttaaaattttiiiioooonnnn CCCChhhhaaaannnnggggeeeessss
  1289.      Many of the base and library pods were updated.  These new pods are
  1290.      included in section 1:
  1291.  
  1292.      the _p_e_r_l_d_e_l_t_a manpage
  1293.           This document.
  1294.  
  1295.      the _p_e_r_l_f_a_q manpage
  1296.           Frequently asked questions.
  1297.  
  1298.      the _p_e_r_l_l_o_c_a_l_e manpage
  1299.           Locale support (internationalization and localization).
  1300.  
  1301.      the _p_e_r_l_t_o_o_t manpage
  1302.           Tutorial on Perl OO programming.
  1303.  
  1304.      the _p_e_r_l_a_p_i_o manpage
  1305.           Perl internal IO abstraction interface.
  1306.  
  1307.      the _p_e_r_l_m_o_d_l_i_b manpage
  1308.           Perl module library and recommended practice for module creation.
  1309.           Extracted from the _p_e_r_l_m_o_d manpage (which is much smaller as a
  1310.           result).
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.                                                                        PPPPaaaaggggeeee 22220000
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1325.  
  1326.  
  1327.  
  1328.      the _p_e_r_l_d_e_b_u_g manpage
  1329.           Although not new, this has been massively updated.
  1330.  
  1331.      the _p_e_r_l_s_e_c manpage
  1332.           Although not new, this has been massively updated.
  1333.  
  1334. NNNNeeeewwww DDDDiiiiaaaaggggnnnnoooossssttttiiiiccccssss
  1335.      Several new conditions will trigger warnings that were silent before.
  1336.      Some only affect certain platforms.  The following new warnings and
  1337.      errors outline these.  These messages are classified as follows (listed
  1338.      in increasing order of desperation):
  1339.  
  1340.         (W) A warning (optional).
  1341.         (D) A deprecation (optional).
  1342.         (S) A severe warning (mandatory).
  1343.         (F) A fatal error (trappable).
  1344.         (P) An internal error you should never see (trappable).
  1345.         (X) A very fatal error (nontrappable).
  1346.         (A) An alien error message (not generated by Perl).
  1347.  
  1348.  
  1349.      "my" variable %s masks earlier declaration in same scope
  1350.           (W) A lexical variable has been redeclared in the same scope,
  1351.           effectively eliminating all access to the previous instance.  This
  1352.           is almost always a typographical error.  Note that the earlier
  1353.           variable will still exist until the end of the scope or until all
  1354.           closure referents to it are destroyed.
  1355.  
  1356.      %s argument is not a HASH element or slice
  1357.           (F) The argument to _d_e_l_e_t_e() must be either a hash element, such as
  1358.  
  1359.               $foo{$bar}
  1360.               $ref->[12]->{"susie"}
  1361.  
  1362.           or a hash slice, such as
  1363.  
  1364.               @foo{$bar, $baz, $xyzzy}
  1365.               @{$ref->[12]}{"susie", "queue"}
  1366.  
  1367.  
  1368.      Allocation too large: %lx
  1369.           (X) You can't allocate more than 64K on an MS-DOS machine.
  1370.  
  1371.      Allocation too large
  1372.           (F) You can't allocate more than 2^31+"small amount" bytes.
  1373.  
  1374.      Applying %s to %s will act on scalar(%s)
  1375.           (W) The pattern match (//), substitution (s///), and translation
  1376.           (tr///) operators work on scalar values.  If you apply one of them
  1377.           to an array or a hash, it will convert the array or hash to a scalar
  1378.           value -- the length of an array, or the population info of a hash --
  1379.           and then work on that scalar value.  This is probably not what you
  1380.  
  1381.  
  1382.  
  1383.                                                                        PPPPaaaaggggeeee 22221111
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1391.  
  1392.  
  1393.  
  1394.           meant to do.  See the grep entry in the _p_e_r_l_f_u_n_c manpage and the map
  1395.           entry in the _p_e_r_l_f_u_n_c manpage for alternatives.
  1396.  
  1397.      Attempt to free nonexistent shared string
  1398.           (P) Perl maintains a reference counted internal table of strings to
  1399.           optimize the storage and access of hash keys and other strings.
  1400.           This indicates someone tried to decrement the reference count of a
  1401.           string that can no longer be found in the table.
  1402.  
  1403.      Attempt to use reference as lvalue in substr
  1404.           (W) You supplied a reference as the first argument to _s_u_b_s_t_r() used
  1405.           as an lvalue, which is pretty strange.  Perhaps you forgot to
  1406.           dereference it first.  See the substr entry in the _p_e_r_l_f_u_n_c manpage.
  1407.  
  1408.      Can't redefine active sort subroutine %s
  1409.           (F) Perl optimizes the internal handling of sort subroutines and
  1410.           keeps pointers into them.  You tried to redefine one such sort
  1411.           subroutine when it was currently active, which is not allowed.  If
  1412.           you really want to do this, you should write sort { &func } @x
  1413.           instead of sort func @x.
  1414.  
  1415.      Can't use bareword '%s' as %s ref while "strict refs" in use
  1416.           (F) Only hard references are allowed by "strict refs".  Symbolic
  1417.           references are disallowed.  See the _p_e_r_l_r_e_f manpage.
  1418.  
  1419.      Cannot resolve method `%s' overloading `%s' in package `%s'
  1420.           (P) Internal error trying to resolve overloading specified by a
  1421.           method name (as opposed to a subroutine reference).
  1422.  
  1423.      Constant subroutine %s redefined
  1424.           (S) You redefined a subroutine which had previously been eligible
  1425.           for inlining.  See the section on _C_o_n_s_t_a_n_t _F_u_n_c_t_i_o_n_s in the _p_e_r_l_s_u_b
  1426.           manpage for commentary and workarounds.
  1427.  
  1428.      Constant subroutine %s undefined
  1429.           (S) You undefined a subroutine which had previously been eligible
  1430.           for inlining.  See the section on _C_o_n_s_t_a_n_t _F_u_n_c_t_i_o_n_s in the _p_e_r_l_s_u_b
  1431.           manpage for commentary and workarounds.
  1432.  
  1433.      Copy method did not return a reference
  1434.           (F) The method which overloads "=" is buggy. See the section on _C_o_p_y
  1435.           _C_o_n_s_t_r_u_c_t_o_r in the _o_v_e_r_l_o_a_d manpage.
  1436.  
  1437.      Died (F) You passed _d_i_e() an empty string (the equivalent of die "") or
  1438.           you called it with no args and both $@ and $_ were empty.
  1439.  
  1440.      Exiting pseudo-block via %s
  1441.           (W) You are exiting a rather special block construct (like a sort
  1442.           block or subroutine) by unconventional means, such as a goto, or a
  1443.           loop control statement.  See the sort entry in the _p_e_r_l_f_u_n_c manpage.
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.                                                                        PPPPaaaaggggeeee 22222222
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1457.  
  1458.  
  1459.  
  1460.      Identifier too long
  1461.           (F) Perl limits identifiers (names for variables, functions, etc.)
  1462.           to 252 characters for simple names, somewhat more for compound names
  1463.           (like $A::B).  You've exceeded Perl's limits.  Future versions of
  1464.           Perl are likely to eliminate these arbitrary limitations.
  1465.  
  1466.      Illegal character %s (carriage return)
  1467.           (F) A carriage return character was found in the input.  This is an
  1468.           error, and not a warning, because carriage return characters can
  1469.           break multi-line strings, including here documents (e.g., print
  1470.           <<EOF;).
  1471.  
  1472.      Illegal switch in PERL5OPT: %s
  1473.           (X) The PERL5OPT environment variable may only be used to set the
  1474.           following switches: ----[[[[DDDDIIIIMMMMUUUUddddmmmmwwww]]]].
  1475.  
  1476.      Integer overflow in hex number
  1477.           (S) The literal hex number you have specified is too big for your
  1478.           architecture. On a 32-bit architecture the largest hex literal is
  1479.           0xFFFFFFFF.
  1480.  
  1481.      Integer overflow in octal number
  1482.           (S) The literal octal number you have specified is too big for your
  1483.           architecture. On a 32-bit architecture the largest octal literal is
  1484.           037777777777.
  1485.  
  1486.      internal error: glob failed
  1487.           (P) Something went wrong with the external _p_r_o_g_r_a_m(s) used for glob
  1488.           and <*.c>.  This may mean that your csh (C shell) is broken.  If so,
  1489.           you should change all of the csh-related variables in config.sh:  If
  1490.           you have tcsh, make the variables refer to it as if it were csh
  1491.           (e.g. full_csh='/usr/bin/tcsh'); otherwise, make them all empty
  1492.           (except that d_csh should be 'undef') so that Perl will think csh is
  1493.           missing.  In either case, after editing config.sh, run ./Configure
  1494.           -S and rebuild Perl.
  1495.  
  1496.      Invalid conversion in %s: "%s"
  1497.           (W) Perl does not understand the given format conversion.  See the
  1498.           sprintf entry in the _p_e_r_l_f_u_n_c manpage.
  1499.  
  1500.      Invalid type in pack: '%s'
  1501.           (F) The given character is not a valid pack type.  See the pack
  1502.           entry in the _p_e_r_l_f_u_n_c manpage.
  1503.  
  1504.      Invalid type in unpack: '%s'
  1505.           (F) The given character is not a valid unpack type.  See the unpack
  1506.           entry in the _p_e_r_l_f_u_n_c manpage.
  1507.  
  1508.      Name "%s::%s" used only once: possible typo
  1509.           (W) Typographical errors often show up as unique variable names.  If
  1510.           you had a good reason for having a unique name, then just mention it
  1511.           again somehow to suppress the message (the use vars pragma is
  1512.  
  1513.  
  1514.  
  1515.                                                                        PPPPaaaaggggeeee 22223333
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1523.  
  1524.  
  1525.  
  1526.           provided for just this purpose).
  1527.  
  1528.      Null picture in formline
  1529.           (F) The first argument to formline must be a valid format picture
  1530.           specification.  It was found to be empty, which probably means you
  1531.           supplied it an uninitialized value.  See the _p_e_r_l_f_o_r_m manpage.
  1532.  
  1533.      Offset outside string
  1534.           (F) You tried to do a read/write/send/recv operation with an offset
  1535.           pointing outside the buffer.  This is difficult to imagine.  The
  1536.           sole exception to this is that sysread()ing past the buffer will
  1537.           extend the buffer and zero pad the new area.
  1538.  
  1539.      Out of memory!
  1540.           (X|F) The _m_a_l_l_o_c() function returned 0, indicating there was
  1541.           insufficient remaining memory (or virtual memory) to satisfy the
  1542.           request.
  1543.  
  1544.           The request was judged to be small, so the possibility to trap it
  1545.           depends on the way Perl was compiled.  By default it is not
  1546.           trappable.  However, if compiled for this, Perl may use the contents
  1547.           of $^M as an emergency pool after _d_i_e()ing with this message.  In
  1548.           this case the error is trappable _o_n_c_e.
  1549.  
  1550.      Out of memory during request for %s
  1551.           (F) The _m_a_l_l_o_c() function returned 0, indicating there was
  1552.           insufficient remaining memory (or virtual memory) to satisfy the
  1553.           request. However, the request was judged large enough (compile-time
  1554.           default is 64K), so a possibility to shut down by trapping this
  1555.           error is granted.
  1556.  
  1557.      panic: frexp
  1558.           (P) The library function _f_r_e_x_p() failed, making _p_r_i_n_t_f("%f")
  1559.           impossible.
  1560.  
  1561.      Possible attempt to put comments in qw() list
  1562.           (W) _q_w() lists contain items separated by whitespace; as with
  1563.           literal strings, comment characters are not ignored, but are instead
  1564.           treated as literal data.  (You may have used different delimiters
  1565.           than the exclamation marks parentheses shown here; braces are also
  1566.           frequently used.)
  1567.  
  1568.           You probably wrote something like this:
  1569.  
  1570.               @list = qw(
  1571.                   a # a comment
  1572.                   b # another comment
  1573.               );
  1574.  
  1575.           when you should have written this:
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.                                                                        PPPPaaaaggggeeee 22224444
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1589.  
  1590.  
  1591.  
  1592.               @list = qw(
  1593.                   a
  1594.                   b
  1595.               );
  1596.  
  1597.           If you really want comments, build your list the old-fashioned way,
  1598.           with quotes and commas:
  1599.  
  1600.               @list = (
  1601.                   'a',    # a comment
  1602.                   'b',    # another comment
  1603.               );
  1604.  
  1605.  
  1606.      Possible attempt to separate words with commas
  1607.           (W) _q_w() lists contain items separated by whitespace; therefore
  1608.           commas aren't needed to separate the items. (You may have used
  1609.           different delimiters than the parentheses shown here; braces are
  1610.           also frequently used.)
  1611.  
  1612.           You probably wrote something like this:
  1613.  
  1614.               qw! a, b, c !;
  1615.  
  1616.           which puts literal commas into some of the list items.  Write it
  1617.           without commas if you don't want them to appear in your data:
  1618.  
  1619.               qw! a b c !;
  1620.  
  1621.  
  1622.      Scalar value @%s{%s} better written as $%s{%s}
  1623.           (W) You've used a hash slice (indicated by @) to select a single
  1624.           element of a hash.  Generally it's better to ask for a scalar value
  1625.           (indicated by $).  The difference is that $foo{&bar} always behaves
  1626.           like a scalar, both when assigning to it and when evaluating its
  1627.           argument, while @foo{&bar} behaves like a list when you assign to
  1628.           it, and provides a list context to its subscript, which can do weird
  1629.           things if you're expecting only one subscript.
  1630.  
  1631.      Stub found while resolving method `%s' overloading `%s' in package `%s'
  1632.           (P) Overloading resolution over @ISA tree may be broken by importing
  1633.           stubs.  Stubs should never be implicitely created, but explicit
  1634.           calls to can may break this.
  1635.  
  1636.      Too late for "----TTTT" option
  1637.           (X) The #! line (or local equivalent) in a Perl script contains the
  1638.           ----TTTT option, but Perl was not invoked with ----TTTT in its argument list.
  1639.           This is an error because, by the time Perl discovers a ----TTTT in a
  1640.           script, it's too late to properly taint everything from the
  1641.           environment.  So Perl gives up.
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.                                                                        PPPPaaaaggggeeee 22225555
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1655.  
  1656.  
  1657.  
  1658.      untie attempted while %d inner references still exist
  1659.           (W) A copy of the object returned from tie (or tied) was still valid
  1660.           when untie was called.
  1661.  
  1662.      Unrecognized character %s
  1663.           (F) The Perl parser has no idea what to do with the specified
  1664.           character in your Perl script (or eval).  Perhaps you tried to run a
  1665.           compressed script, a binary program, or a directory as a Perl
  1666.           program.
  1667.  
  1668.      Unsupported function fork
  1669.           (F) Your version of executable does not support forking.
  1670.  
  1671.           Note that under some systems, like OS/2, there may be different
  1672.           flavors of Perl executables, some of which may support fork, some
  1673.           not. Try changing the name you call Perl by to perl_, perl__, and so
  1674.           on.
  1675.  
  1676.      Use of "$$<digit>" to mean "${$}<digit>" is deprecated
  1677.           (D) Perl versions before 5.004 misinterpreted any type marker
  1678.           followed by "$" and a digit.  For example, "$$0" was incorrectly
  1679.           taken to mean "${$}0" instead of "${$0}".  This bug is (mostly)
  1680.           fixed in Perl 5.004.
  1681.  
  1682.           However, the developers of Perl 5.004 could not fix this bug
  1683.           completely, because at least two widely-used modules depend on the
  1684.           old meaning of "$$0" in a string.  So Perl 5.004 still interprets
  1685.           "$$<digit>" in the old (broken) way inside strings; but it generates
  1686.           this message as a warning.  And in Perl 5.005, this special
  1687.           treatment will cease.
  1688.  
  1689.      Value of %s can be "0"; test with defined()
  1690.           (W) In a conditional expression, you used <HANDLE>, <*> (glob),
  1691.           each(), or readdir() as a boolean value.  Each of these constructs
  1692.           can return a value of "0"; that would make the conditional
  1693.           expression false, which is probably not what you intended.  When
  1694.           using these constructs in conditional expressions, test their values
  1695.           with the defined operator.
  1696.  
  1697.      Variable "%s" may be unavailable
  1698.           (W) An inner (nested) _a_n_o_n_y_m_o_u_s subroutine is inside a _n_a_m_e_d
  1699.           subroutine, and outside that is another subroutine; and the
  1700.           anonymous (innermost) subroutine is referencing a lexical variable
  1701.           defined in the outermost subroutine.  For example:
  1702.  
  1703.              sub outermost { my $a; sub middle { sub { $a } } }
  1704.  
  1705.           If the anonymous subroutine is called or referenced (directly or
  1706.           indirectly) from the outermost subroutine, it will share the
  1707.           variable as you would expect.  But if the anonymous subroutine is
  1708.           called or referenced when the outermost subroutine is not active, it
  1709.           will see the value of the shared variable as it was before and
  1710.  
  1711.  
  1712.  
  1713.                                                                        PPPPaaaaggggeeee 22226666
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1721.  
  1722.  
  1723.  
  1724.           during the *first* call to the outermost subroutine, which is
  1725.           probably not what you want.
  1726.  
  1727.           In these circumstances, it is usually best to make the middle
  1728.           subroutine anonymous, using the sub {} syntax.  Perl has specific
  1729.           support for shared variables in nested anonymous subroutines; a
  1730.           named subroutine in between interferes with this feature.
  1731.  
  1732.      Variable "%s" will not stay shared
  1733.           (W) An inner (nested) _n_a_m_e_d subroutine is referencing a lexical
  1734.           variable defined in an outer subroutine.
  1735.  
  1736.           When the inner subroutine is called, it will probably see the value
  1737.           of the outer subroutine's variable as it was before and during the
  1738.           *first* call to the outer subroutine; in this case, after the first
  1739.           call to the outer subroutine is complete, the inner and outer
  1740.           subroutines will no longer share a common value for the variable.
  1741.           In other words, the variable will no longer be shared.
  1742.  
  1743.           Furthermore, if the outer subroutine is anonymous and references a
  1744.           lexical variable outside itself, then the outer and inner
  1745.           subroutines will _n_e_v_e_r share the given variable.
  1746.  
  1747.           This problem can usually be solved by making the inner subroutine
  1748.           anonymous, using the sub {} syntax.  When inner anonymous subs that
  1749.           reference variables in outer subroutines are called or referenced,
  1750.           they are automatically rebound to the current values of such
  1751.           variables.
  1752.  
  1753.      Warning: something's wrong
  1754.           (W) You passed _w_a_r_n() an empty string (the equivalent of warn "") or
  1755.           you called it with no args and $_ was empty.
  1756.  
  1757.      Ill-formed logical name |%s| in prime_env_iter
  1758.           (W) A warning peculiar to VMS.  A logical name was encountered when
  1759.           preparing to iterate over %ENV which violates the syntactic rules
  1760.           governing logical names.  Since it cannot be translated normally, it
  1761.           is skipped, and will not appear in %ENV.  This may be a benign
  1762.           occurrence, as some software packages might directly modify logical
  1763.           name tables and introduce nonstandard names, or it may indicate that
  1764.           a logical name table has been corrupted.
  1765.  
  1766.      Got an error from DosAllocMem
  1767.           (P) An error peculiar to OS/2.  Most probably you're using an
  1768.           obsolete version of Perl, and this should not happen anyway.
  1769.  
  1770.      Malformed PERLLIB_PREFIX
  1771.           (F) An error peculiar to OS/2.  PERLLIB_PREFIX should be of the form
  1772.  
  1773.               prefix1;prefix2
  1774.  
  1775.           or
  1776.  
  1777.  
  1778.  
  1779.                                                                        PPPPaaaaggggeeee 22227777
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1787.  
  1788.  
  1789.  
  1790.               prefix1 prefix2
  1791.  
  1792.           with nonempty prefix1 and prefix2.  If prefix1 is indeed a prefix of
  1793.           a builtin library search path, prefix2 is substituted.  The error
  1794.           may appear if components are not found, or are too long.  See
  1795.           "PERLLIB_PREFIX" in _R_E_A_D_M_E._o_s_2.
  1796.  
  1797.      PERL_SH_DIR too long
  1798.           (F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find
  1799.           the sh-shell in.  See "PERL_SH_DIR" in _R_E_A_D_M_E._o_s_2.
  1800.  
  1801.      Process terminated by SIG%s
  1802.           (W) This is a standard message issued by OS/2 applications, while
  1803.           *nix applications die in silence.  It is considered a feature of the
  1804.           OS/2 port.  One can easily disable this by appropriate sighandlers,
  1805.           see the section on _S_i_g_n_a_l_s in the _p_e_r_l_i_p_c manpage.  See also
  1806.           "Process terminated by SIGTERM/SIGINT" in _R_E_A_D_M_E._o_s_2.
  1807.  
  1808. BBBBUUUUGGGGSSSS
  1809.      If you find what you think is a bug, you might check the headers of
  1810.      recently posted articles in the comp.lang.perl.misc newsgroup.  There may
  1811.      also be information at http://www.perl.com/perl/, the Perl Home Page.
  1812.  
  1813.      If you believe you have an unreported bug, please run the ppppeeeerrrrllllbbbbuuuugggg program
  1814.      included with your release.  Make sure you trim your bug down to a tiny
  1815.      but sufficient test case.  Your bug report, along with the output of perl
  1816.      -V, will be sent off to <_p_e_r_l_b_u_g@_p_e_r_l._c_o_m> to be analysed by the Perl
  1817.      porting team.
  1818.  
  1819. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  1820.      The _C_h_a_n_g_e_s file for exhaustive details on what changed.
  1821.  
  1822.      The _I_N_S_T_A_L_L file for how to build Perl.  This file has been significantly
  1823.      updated for 5.004, so even veteran users should look through it.
  1824.  
  1825.      The _R_E_A_D_M_E file for general stuff.
  1826.  
  1827.      The _C_o_p_y_i_n_g file for copyright information.
  1828.  
  1829. HHHHIIIISSSSTTTTOOOORRRRYYYY
  1830.      Constructed by Tom Christiansen, grabbing material with permission from
  1831.      innumerable contributors, with kibitzing by more than a few Perl porters.
  1832.  
  1833.      Last update: Wed May 14 11:14:09 EDT 1997
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.                                                                        PPPPaaaaggggeeee 22228888
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852. PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))                                                      PPPPEEEERRRRLLLLDDDDEEEELLLLTTTTAAAA((((1111))))
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.                                                                        PPPPaaaaggggeeee 22229999
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.